#include <cstdio>
#include <cstring>
#include <cstdlib>

const int MAXS=205;
const int MAXB=105;
const int MOD=1000000007;

int dp[MAXS][MAXB][MAXS];
int S, B;

int dfs(int s, int b, int k)
{
	if (dp[s][b][k]!=-1) return dp[s][b][k];
	if (b==1) return (s==0);
	if (s==0) return 1;
	if (s<k) return 0;
	dp[s][b][k]=(dfs(s, b, k+1)+dfs(s-k+k/2, b-1, k/2))%MOD;
	return dp[s][b][k];
}

int main()
{
	memset(dp, -1, sizeof(dp));
	while (scanf("%d%d", &S, &B)==2)
	{
		printf("%d\n", dfs(S, B, 0));
	}
	return 0;
}
